package com.wzy.netty.core.codec;

import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.CharsetUtil;

/**
 * 描述
 * 自定义一个handler 需要继承netty规定好的某个HandlerAdapter
 * 创建人    Wzy
 * 创建时间: 2020-05-21  14:39
 */
public class NettyServerHandler extends ChannelInboundHandlerAdapter {


    /*
     * 1.ChannelHandlerContext ctx :上下文对象,含有管道pipeline,通道channel,地址
     * 2object msg: 就是客户端发送的数据,默认是object格式
     * */
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        //读取客户端发送的 studenpojo
        StudentPOJO.Student student = (StudentPOJO.Student) msg;
        System.out.println("客户端发送的数据 id" + student.getId()
                + "名字:" + student.getName());
    }

    //读取数据完毕
    @Override
    public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
        //数据写入到缓存,并刷新
        //一般将,我们对这个发送的数据进行编码
        ctx.writeAndFlush(Unpooled.copiedBuffer("hello,客户端(*^▽^*)", CharsetUtil.UTF_8));
    }

    //异常处理
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        ctx.close();
    }
}
